home *** CD-ROM | disk | FTP | other *** search
- 10 REM: FIND-A-WORD PUZZLE GENERATOR
- 20 REM: SUBMITTED BY MARK-DAVID SEIDEL
- 30 RANDOMIZE VAL(RIGHT$(TIME$,2))
- 40 SCREEN 0,0,0:COLOR 7,0,0:WIDTH 40:CLS:KEY OFF
- 50 LOCATE 8,14:PRINT "If you would like to see the puzzle on"
- 60 LOCATE 10,14:PRINT "the screen as you make it type 0 ;"
- 70 LOCATE 12,14:PRINT "for a blank screen type 1: ";
- 80 INPUT BLANK:CLS
- 85 LOCATE 2,14:PRINT "To creat a puzzle, enter a word you"
- 90 PRINT "would like to have in the puzzle "
- 95 PRINT "after 'WORD # 0 ?'"
- 100 LOCATE 10,14:PRINT "When you have entered all the words you"
- 105 PRINT "would like in the puzzle, type the word"
- 110 PRINT "'STOP'and the computer will do the rest."
- 115 LOCATE 20,10:PRINT "Press any key to continue ":A$=INKEY$:IF A$ = "" THEN 115
- 120 DIM W$(200),B%(3,3),A%(40,20):Z = 0:CLS
- 130 Z = Z+1
- 140 LOCATE 22,1:PRINT "Word # ";Z;": ";:INPUT A$: IF A$ = "" THEN 140
- 141 FOR I=1 TO LEN(A$)
- 142 MID$(A$,I,1)=CHR$(95 AND (ASC(MID$(A$,I,1))))
- 143 NEXT I
- 150 IF A$ = "STOP" THEN 490
- 160 W$(Z) = A$
- 170 U = INT(RND(1)*20)+1:L = INT(RND(1)*40)+1
- 180 FOR X = -1 TO 1 : FOR Y = -1 TO 1
- 190 IF X = Y AND Y = 0 THEN 290
- 200 X1 = L: Y1 = U
- 210 FOR C = 1 TO LEN(A$)
- 220 X1 = X1 + X: Y1 = Y1 + Y
- 230 IF X1 > 40 OR X1 < 1 OR Y1 > 20 OR Y1 < 1 THEN B%(X+2,Y+2)=0:GOTO 290
- 240 IF A%(X1,Y1) = 0 THEN 270
- 250 IF A%(X1,Y1) <> ASC(MID$(A$,C,1)) THEN B%(X+2,Y+2)=0:GOTO 290
- 260 B%(X+2,Y+2) = B%(X+2,Y+2) +1
- 270 NEXT C
- 280 B%(X+2,Y+2) = B%(X+2,Y+2) +1: B = B + 1
- 290 NEXT Y: NEXT X
- 300 IF B = 0 THEN 170
- 310 R = 2:D = 2
- 320 FOR X = 1 TO 3: FOR Y = 1 TO 3
- 330 IF B%(X,Y) > B%(R,D) THEN R = X:D = Y
- 340 NEXT Y: NEXT X
- 350 X = R-2: Y = D-2
- 360 IF X = -1 AND Y = -1 AND B%(1,1) = 1 THEN 380
- 370 GOTO 400
- 380 X = INT(RND(1)*3)-1: Y = INT(RND(1)*3)-1
- 390 IF (X=0 AND Y=0) OR (B%(X+2,Y+2) = 0) THEN 380
- 400 X1 = L: Y1 = U
- 410 FOR C = 1 TO LEN(A$)
- 420 X1 = X1 + X: Y1 = Y1 + Y
- 430 A%(X1,Y1) = ASC(MID$(A$,C,1))
- 440 IF BLANK THEN 460
- 450 LOCATE Y1,X1:PRINT CHR$(A%(X1,Y1));
- 460 NEXT C
- 470 B=0: FOR X=1 TO 3: FOR Y=1 TO 3: B%(X,Y)=0:NEXT Y :NEXT X
- 480 LOCATE 22,1:PRINT SPC(39);:GOTO 130
- 490 FOR X = 1 TO 40: FOR Y = 1 TO 20
- 500 IF A%(X,Y) <> 0 THEN 520
- 510 A%(X,Y) = 45: LOCATE Y,X: PRINT "-";
- 520 NEXT Y: NEXT X
- 530 LOCATE 22,1:INPUT "Ready to print: Turn on printer and press <RETURN>...";A$: GOSUB 640
- 540 LPRINT :LPRINT "WORD PUZZLE ANSWER KEY"
- 550 LPRINT CHR$(12)
- 560 PRINT:PRINT "Please wait a minute for me to create a puzzle..."
- 570 FOR X = 1 TO 40: FOR Y = 1 TO 20
- 580 IF A%(X,Y) <> 45 THEN 600
- 590 B = INT(RND(1)*26)+65:A%(X,Y) = B
- 600 NEXT Y: NEXT X
- 610 GOSUB 640
- 620 LPRINT: LPRINT "Computer Generated word puzzle"
- 630 LPRINT CHR$(12):GOTO 690
- 640 LPRINT
- 650 FOR X=1 TO 40: FOR Y=1 TO 20: LPRINT CHR$(A%(X,Y));" ";
- 670 NEXT Y: LPRINT :NEXT X
- 680 RETURN
- 690 LPRINT :LPRINT: LPRINT "Word List":LPRINT
- 700 FOR I = 1 TO Z-1: LPRINT W$(I): NEXT I
- 710 LPRINT CHR$(12)
- 720 PRINT: INPUT "Would you like another copy? (y/n)";A$:IF LEFT$(A$,1)= "Y" OR A$= "y" THEN GOTO 610
- 730 END